nonlin_solve Module



Derived Types

type, public, extends(equation_solver_1var) ::  brent_solver

Defines a derivative-free solver for a scalar equation based on Brent's method. The method combines bisection with secant and inverse quadratic interpolation to maintain a bracket and converge to a root.

Type-Bound Procedures

procedure, public :: get_diff_tolerance => es1_get_diff_tol
procedure, public :: get_fcn_tolerance => es1_get_fcn_tol
procedure, public :: get_max_fcn_evals => es1_get_max_eval
procedure, public :: get_print_status => es1_get_print_status
procedure, public :: get_var_tolerance => es1_get_var_tol
procedure, public :: set_diff_tolerance => es1_set_diff_tol
procedure, public :: set_fcn_tolerance => es1_set_fcn_tol
procedure, public :: set_max_fcn_evals => es1_set_max_eval
procedure, public :: set_print_status => es1_set_print_status
procedure, public :: set_var_tolerance => es1_set_var_tol
procedure, public :: solve => brent_solve

type, public, abstract, extends(equation_solver) ::  line_search_solver

A base class for nonlinear solvers that improve convergence by combining a search direction with a line search. At each iteration the step is taken as where the step length $\alpha_k$ is chosen to satisfy a sufficient decrease condition such as the Armijo rule .

Type-Bound Procedures

procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_line_search => lss_get_line_search
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_use_line_search => lss_get_use_search
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: is_line_search_defined => lss_is_line_search_defined
procedure, public :: set_default_line_search => lss_set_default
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_line_search => lss_set_line_search
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_use_line_search => lss_set_use_search
procedure, public :: set_var_tolerance => es_set_var_tol
procedure(nonlin_solver), public, deferred, pass :: solve

type, public, extends(equation_solver_1var) ::  newton_1var_solver

Defines a safeguarded Newton solver for a scalar equation . The iteration uses the Newton update and retains a bracketing interval so that the step remains bounded by the root bracket.

Type-Bound Procedures

procedure, public :: get_diff_tolerance => es1_get_diff_tol
procedure, public :: get_fcn_tolerance => es1_get_fcn_tol
procedure, public :: get_max_fcn_evals => es1_get_max_eval
procedure, public :: get_print_status => es1_get_print_status
procedure, public :: get_var_tolerance => es1_get_var_tol
procedure, public :: set_diff_tolerance => es1_set_diff_tol
procedure, public :: set_fcn_tolerance => es1_set_fcn_tol
procedure, public :: set_max_fcn_evals => es1_set_max_eval
procedure, public :: set_print_status => es1_set_print_status
procedure, public :: set_var_tolerance => es1_set_var_tol
procedure, public :: solve => newt1var_solve

type, public, extends(line_search_solver) ::  newton_solver

Defines a Newton solver for systems of nonlinear equations. At each iteration the correction is obtained from the linearized system where is the Jacobian matrix of .

Type-Bound Procedures

procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_line_search => lss_get_line_search
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_use_line_search => lss_get_use_search
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: is_line_search_defined => lss_is_line_search_defined
procedure, public :: set_default_line_search => lss_set_default
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_line_search => lss_set_line_search
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_use_line_search => lss_set_use_search
procedure, public :: set_var_tolerance => es_set_var_tol
procedure, public :: solve => ns_solve

type, public, extends(line_search_solver) ::  quasi_newton_solver

Defines a quasi-Newton solver based upon Broyden's method. The algorithm maintains an approximate Jacobian and updates the iterate from the nonlinear system $F(x)=0$ using with the rank-one Jacobian correction where .

Type-Bound Procedures

procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_jacobian_interval => qns_get_jac_interval
procedure, public :: get_line_search => lss_get_line_search
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_use_line_search => lss_get_use_search
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: is_line_search_defined => lss_is_line_search_defined
procedure, public :: set_default_line_search => lss_set_default
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_jacobian_interval => qns_set_jac_interval
procedure, public :: set_line_search => lss_set_line_search
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_use_line_search => lss_set_use_search
procedure, public :: set_var_tolerance => es_set_var_tol
procedure, public :: solve => qns_solve